#ifndef __SOFT_I2C_H_
#define __SOFT_I2C_H_

#include "polsys_mcu.h"


typedef enum _softi2c_result
{
	SOFTI2C_OK,
	// I2C_BUS_BUSY,
	SOFTI2C_SDA_FAIL,		//发送器件地址失败：无回应
	SOFTI2C_SD_FAIL		    //发送数据失败：无回应
}softi2c_result_t;



// 初始化I2C的IO口
void SoftI2c_Init(void);

// 产生起始信号
void SoftI2c_Start(void);

// 产生停止信号
void SoftI2c_Stop(void);

// I2C发送一个字节
//返回值：false，接收应答失败
//        true，接收应答成功
bool SoftI2c_SendByte(u8 txd);

// I2C接收一个字节
// ack: false-发送NACK，true-发送ACK
u8 SoftI2c_ReadByte(bool ack);

// 向从机写入数据
// dev_addr: 器件地址
// reg_addr: 寄存器地址
softi2c_result_t SoftI2c_Write(u8 dev_addr, u8 reg_addr, u8 *dat, u8 len);

// 从从机读出数据
// dev_addr: 器件地址
// reg_addr: 寄存器地址
softi2c_result_t SoftI2c_Read(u8 dev_addr, u8 reg_addr,u8 *dat, u8 len);

#endif
















